//
//  Queue.swift
//  数据结构与算法
//
//  Created by ZERO on 2021/2/25.
//

import Foundation

// MARK: - 队列
/// 队列
struct Queue<T> {
    /// 声明一个泛型数组，用于存队列中的元素(栈结构的后备存储器)
    private var elements = [T]()
    
    var isEmpty: Bool {
        return elements.isEmpty
    }
    
    mutating func enqueue(_ element: T) {
        elements.append(element)
    }
    
    mutating func dequeue() -> T? {
        if elements.isEmpty {
            return nil
        } else {
            return elements.remove(at: 0)
        }
    }
}
